MySQL加解密函数 | 您所在的位置:网站首页 › mysql 解密aes › MySQL加解密函数 |
MySQL自带的加解密函数主要有以下3对: ENCODE()、DECODE()已在5.7.2版本弃用,目前仍可用,但将在后续版本中删除。 DES_ENCRYPT()、DES_DECRYPT()已在5.7.6版本弃用,目前仍可用,但将在后续版本中删除。 AES_ENCRYPT()、AES_DECRYPT()推荐使用这对加解密函数。aes_encrypt()和aes_decrypt()使用官方的aes(高级加密标准)算法(以前称为“rijndael”)实现数据的加密和解密。 加密后的二进制串长度可以通过下面公式计算: 16 * (trunc(string_length / 16) + 1) MySQL版本小于5.7.4: 函数参数: AES_ENCRYPT(str,key_str),其中str为待加密字符串,key_str为秘钥 AES_DECRYPT(crypt_str,key_str),其中crypt_str为已加密的二进制串,key_str为秘钥 例: 创建表,插入加密字段,秘钥为‘keykey’查询出的结果为密文:
使用错误的key解密,结果为NULL: 使用正确的key解密:
MySQL版本大于等于5.7.4: 函数参数: AES_ENCRYPT(str,key_str[,init_vector]),其中str为待加密字符串,key_str为秘钥,其中init_vector根据选择不同的块加密模式为可选项 AES_DECRYPT(crypt_str,key_str[,init_vector]),其中crypt_str为已加密的二进制串,key_str为秘钥,其中init_vector根据选择不同的块加密模式为可选项 st和key_str参数可以是任何长度,init_vector参数不得小于16个字符。 可以通过block_encryption_mode参数,控制块加密模式,默认值为:aes-128-ecb。可配置的形式为:aes-keylen–mode。 其中: keylen可配置为128, 192, 256 mode可配置为ECB, CBC, CFB1, CFB8, CFB128, OFB 下表展示了不同mode是否需要init_vector参数。 Block Encryption ModeSSL Libraries that Support ModeInitialization Vector RequiredECBOpenSSL, yaSSLNoCBCOpenSSL, yaSSLYesCFB1OpenSSLYesCFB8OpenSSLYesCFB128OpenSSLYesOFBOpenSSLYes默认的ECB模式不需要init_vector参数,用法与5.7.4以前相同。 例: 修改块加密模式:
该模式下再使用两参数加密报错:
三参数加密: 解密成功: |
CopyRight 2018-2019 实验室设备网 版权所有 |